#include "gps.h"

#define BUFFER_SIZE 512

int temptest = 0;

char GPS_Info[512]; // 存储最终的GPS信息

char temp_buffer[BUFFER_SIZE];

GPSAnalyzeData gps_parsed_data;

// 从 GPS_Buffer 中解析经纬度和经度类型和维度类型
char *AnalyzeGPSData(void)
{
    char *token = NULL;

    memset(GPS_Info, 0, sizeof(GPS_Info)); // 赋值之前先清空一次，避免遇到snprintf函数导致程序卡死
    memset(temp_buffer, 0, BUFFER_SIZE);

    // 复制 GPS_Buffer 到临时缓冲区
    strncpy(temp_buffer, GPSRecvData.GPS_Buffer, BUFFER_SIZE);

    // 使用逗号作为分隔符来拆分字符串
    token = strtok(temp_buffer, ",");

    // 跳过消息类型
    token = strtok(NULL, ",");

    // 解析纬度
    if (strlen(token) >= 7)
    {
        gps_parsed_data.latitude_deg = atoi(token) / 100; // 获取纬度（度）
        gps_parsed_data.latitude_min = atof(token + 2);   // 获取纬度（分）
    }

    // 获取纬度类型
    token = strtok(NULL, ",");
    if (strlen(token) == 1)
    {
        gps_parsed_data.latitudeType = token[0];
    }

    // 解析经度
    token = strtok(NULL, ",");
    if (strlen(token) >= 8)
    {
        gps_parsed_data.longitude_deg = atoi(token) / 100; // 获取经度（度）
        gps_parsed_data.longitude_min = atof(token + 3);   // 获取经度（分）
    }

    // 获取经度类型
    token = strtok(NULL, ",");
    if (strlen(token) == 1)
    {
        gps_parsed_data.longitudeType = token[0];
    }

    snprintf(GPS_Info, 256, "老人目前出现紧急情况,当前位置:经度=%d度%.2f分,%c;纬度=%d度%.2f分,%c;",
             gps_parsed_data.longitude_deg, gps_parsed_data.longitude_min, gps_parsed_data.longitudeType,
             gps_parsed_data.latitude_deg, gps_parsed_data.latitude_min, gps_parsed_data.latitudeType);

    return GPS_Info;
}
